package com.nx.samuel.dubbo_spi.impl;

import com.nx.samuel.dubbo_spi.api.Car;
import org.apache.dubbo.common.URL;

/**
 * dubbo中的SPI的AOP扩展, 使用的是包装类的形式
 */
public class CarWrapper implements Car {

    // 原始的目标类
    private Car car;

    // 通过构造函数注入
    public CarWrapper(Car car){
        System.out.println("init car wrapper");
        this.car=car;
    }


    /**
     * 进行AOP扩展, 也就是对原始目标进行包装
     */
    @Override
    public void getColor() {
        System.out.println("==========before aop===========");
        car.getColor();
        System.out.println("==========after aop===========");
    }

    @Override
    public void getColorForUrl(URL url) {

    }
}
